mysql - 副本
Administrator
2021-07-26
mysql 1 数据库基本概念 mysql数据库软件 SQL 数据库的引文单词 什么数据库 数据库特点 常见的数据库软件 安装数据库 卸载数据库 数据库的启动与登陆 使用 SQLyog 登录数据库 MySQL 目录结构 数据库管理系统 数据库管理系统、数据库和表的关系 结论 配置 MySQL服务启动 MySQL登录 MySQL退出 MySQL目录结构 什么是sql SQL通用语法 SQL分类 DDL DML DQL DCL DDL 操作数据库(CRUD) 操作表(CRUD) C(Crearte) R(Retrieve) U(Update) D(Delete) 使用数据库 查询所有数据库名称 查看某个数据库的字符集 创建数据库 创建数据库,判断不存在,再创建 创建数据库,并指定字符集 练习 创建db4数据库,判断是否存在,并制定字符集为gbk 修改数据库的字符集 删除数据库 删除数据库,如果存在,再删除 查询当前正在使用的数据库名称 使用数据库 C(Crearte) R(Retrieve) U(Update) D(Delete) 关键词 查询某个数据库中所有表的名称 查询表结构 语法 常用数据类型 学生表 全部数据类型 创建学生表 创建表 复制表 删除表 删除表,如果存在 修改表名 修改表的字符集 添加一列 修改列名称,类型 查看表的字符集 修改名称和类型 只改数据类型 DML 添加数据 删除数据 修改数据 语法 注意 DQL 查询数据 语法 基础查询 语法 语法 条件查询 模糊查询 排序查询 聚合函数 分组查询 分页查询 约束 语法 方式 例子 计算个数 计算最大值 计算最小值 计算和 计算平均值 语法 注意 语法 公式 概念 分类 主键约束 非空约束 唯一约束 外键约束 使用 非空约束 唯一约束 主键约束 自动增长 1. 创建表时添加约束 2. 创建表完后,添加非空约束 3. 删除name的非空约束 在创建表时,添加唯一约束 删除唯一约束 在表创建完后,添加唯一约束 在创建表时,添加主键约束 删除主键 创建完表后,添加主键 外键约束 1. 在创建表时,可以添加外键 2. 删除外键 3. 创建表之后,添加外键 4. 级联操作 1. 添加级联操作 2. 分类: 数据库设计与表关系 数据库的备份和还原 多表和事务 DCL 组合排序的语法 备份与还原的语句 还原操作 修改自增长的默认值起始值 默认值 外键由来 单表的缺点 解决方案 sql 问题 什么是外键约束 创建约束的语法 删除外键 外键的级联 什么是级联操作: 数据约束小结 表与表之间的关系 表关系的概念 一对多 多对多 一对一 一对多关系案例 界面 表与表的关系 具体sql 多对多关系案例 界面 表与表的关系 具体sql 表与表之间的关系小结 三大范式 1NF 2NF 3NF 三大范式小结 表连接查询 什么是多表查询 数据准备 多表查询的作用 多表查询的分类 笛卡尔积现象 什么是笛卡尔积现象 如何清除笛卡尔积现象的影响 内连接 隐式内连接 显式内连接 确定查询哪些表 确定表连接条件,员工表.dept_id = 部门表.id 的数据才是有效的 确定查询条件,我们查询的是唐僧的信息,员工表.name='唐僧' 确定查询字段,查询唐僧的信息,显示员工 id,姓名,性别,工资和所在的部门名称 我们发现写表名有点长,可以给表取别名,显示的字段名也使用别名 总结内连接查询步骤: 左外连接 右外连接 sql 子查询 什么是子查询 - 需求:查询开发部中有哪些员工 子查询的概念: 子查询结果的三种情况 子查询的结果是一个值的时候 案例 查询工资最高的员工是谁? 查询工资小于平均工资的员工有哪些? 子主题 子查询结果是多行单列的时候 查询工资大于 5000 的员工,来自于哪些部门的名字 查询开发部与财务部所有的员工信息 子查询的结果是多行多列 查询出 2011 年以后入职的员工信息,包括部门名称 子查询小结 事务 事务的应用场景说明 什么是事务 转账说明 手动提交事务 手动提交事务使用过程 执行成功的情况 执行失败的情况 案例演示事务提交 案例演示 2:事务回滚 总结 自动提交事务 案例演示 3:自动提交事务 取消自动提交 查看 MySQL 是否开启自动提交事务 取消自动提交事务 执行更新语句,使用 SQLYog 查看数据库,发现数据并没有改变  在控制台执行 commit 提交任务 事务原理 原理图 事务的步骤: 回滚点 什么是回滚点 回滚点的操作语句 具体操作: 总结 事务的隔离级别 事务的四大特性 ACID 事务的隔离级别 MySQL 数据库有四种隔离级别 MySQL 事务隔离级别相关的命令 查询全局事务隔离级别 设置事务隔离级别,需要退出 MySQL 再重新登录才能看到隔离级别的变化 脏读的演示 1. 打开 A 窗口登录 MySQL,设置全局的隔离级别为最低 2. 打开 B 窗口,AB 窗口都开启事务 3. A 窗口更新 2 个人的账户数据,未提交 4. B 窗口查询账户 5. A 窗口回滚 6. B 窗口查询账户,钱没了 解决脏读的问题 0.将全局的隔离级别进行提升 将数据进行恢复: 1. 在 A 窗口设置全局的隔离级别为 read committed 2. A 更新 2 个人的账户,未提交 3. B 窗口查询账户 4. B 窗口查看账户 不可重复读的演示 0.将数据进行恢复 1. 开启 A 窗口 2. 开启 B 窗口,在 B 窗口开启事务 3. 在 A 窗口开启事务,并更新数据 4. B 窗口查询 解决不可重复读的问题: 0.将全局的隔离级别进行提升为:repeatable read 将数据进行恢复: 1. A 窗口设置隔离级别为:repeatable read 2. B 窗口退出 MySQL,B 窗口再进入 MySQL 3. A 窗口更新数据 4. B 窗口查询 幻读的演示 0.数据恢复 1. 开启 A 窗口 2. A 窗口退出 MySQL,A 窗口重新登录 MySQL 3. 再开启 B 窗口,登录 MySQL 4. 在 B 窗口中开启事务,添加一条记录 5. 在 A 窗口中 commit 提交事务,B 窗口中 insert 语句会在 A 窗口事务提交后立马运 6. 在 A 窗口中接着查询,发现数据不变 7. B 窗口中 commit 提交当前事务 8. A 窗口就能看到最新的数据 1.创建用户 语法 关键字说明: 具体操作 创建 user1 用户,只能在 localhost 这个服务器登录 mysql 服务器,密码为 123 创建 user2 用户可以在任何电脑上登录 mysql 服务器,密码为 123 注意 2.给用户授权 语法 关键字说明: 具体操作 1. 给 user1 用户分配对 test 这个数据库操作的权限:创建表,修改表,插入记录,更 新记录,查询 2. 给 user2 用户分配所有权限,对所有数据库的所有表 3.撤销授权 语法: 具体操作 4.查看权限 语法 具体操作 查看 user1 用户的权限 子主题 5.删除用户 语法 具体操作 子主题 删除 user2 6.修改管理员密码 语法 具体操作 7.修改普通用户密码 语法 具体操作